Compactando / descompactando arquivos simultaneamente [Melhorado]
Publicado por Sandro Marcell 18/07/2007
[ Hits: 6.445 ]
Homepage: http://sanmarcell.wordpress.com
Este script compacta/descompacta arquivos simultaneamente, sem necessidade de parâmetros extras.
Ex.: nome_script arq.txt arq.pdf arq.gz arq.tar.gz
Os arquivos arq.txt e arq.pdf serão compactados; já os arquivs arq.gz e arq.tar.gz serão descompactados.
Está é a versão Shell Bash de um script Tcl que postei aqui no VOL.
Falou!!!
#!/bin/bash # # Compacte/descompacte arquivos simultaneamente. # (Versão Shell Bash) # # Autor: Sandro Marcell (sandro_marcell@yahoo.com.br) # # Uso: nome_script arquivo1 [arquivoN] # # Obs.: # É possível o uso do metacaractere (*) # São necessários os programas: tar, gzip e bzip2 # Realçando saída do comando 'echo': Echo () { echo -e "\e[1m$*\e[m" ; } # Checando parâmetros: [ -z $BASH_ARGC ] && Echo "Uso: $(basename $0) arquivo1 [arquivoN]" && exit # Simples avisos: Aguarde () { Echo "Descompactando..." ; sleep 1 ; } Aguarde2 () { Echo "Compactando..." ; sleep 1 ; } # Arquivo de log: LOG=/tmp/$(basename $0)-$USER.log # Função que testa código de retorno: Testando () { [ $? == 0 ] && Echo "Arquivo descompactado!" \ || Echo "-> Erro! Mais detalhes em $LOG" } # Início do loop: for A ; do # Testes condicionais: [ ! -e $A ] && Echo "-> Arquivo não encontrado." && continue [ ! -O $A ] && Echo "-> Acesso negado." && continue # Compactar ou descompactar? case $A in # Descompactando... *.tar.gz | *.tgz) Aguarde tar -zxf $A 2>> $LOG Testando $? ;; *.gz) Aguarde gunzip $A 2>> $LOG Testando $? ;; *.tar.bz2 | *.tbz) Aguarde tar -jxf $A 2>> $LOG Testando $? ;; *.bz2) Aguarde bunzip2 $A 2>> $LOG Testando $? ;; *) # Compactando... [ -d $A ] && { Aguarde2 tar -czf $A.tar.gz $A 2>> $LOG [ $? == 0 ] && Echo "Diretório compactado!" \ || Echo "-> Erro! Mais detalhes em $LOG" } || { Aguarde2 gzip -f9 $A 2>> $LOG [ $? == 0 ] && Echo "Arquivo compactado!" \ || Echo "-> Erro! Mais detalhes em $LOG" } ;; esac done #Fim
Instalando o plugin flash player no Linux
Mapeamento de servidores e computadores pessoais
Array de números aleatórios não-repetidos de um intervalo em Shellscript (Bashscript)
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Falta pacotes de suporte ao sistema de arquivos (Gerenciador de discos... (2)
Enzo quer programar mas não faz código pra não bugar (12)
Erro de Montagem SSD Nvme (12)
WebScrapping através de screenshot devido a bloqueios de Shadow DOM (1)